package com.tbit.uqbike.client.pojo.ordertrace;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * OrderEventDetail 实体类
 * 对应数据库中的 OrderEventDetail 表
 *
 * @author <a href="mailto:chen.chaoxiong@tbit.com.cn">ChenChaoXiong</a>
 * @since 2024/7/4
 */
@Data
public class OrderEventDetail {

    /**
     * 主键
     */
    private Long id;

    /**
     * 品牌id
     */
    private Integer brandId;

    /**
     * 运营区域id
     */
    private Integer accountId;

    /**
     * traceId
     */
    private String traceId;


    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 车辆id
     */
    private Integer machineId;

    /**
     *
     * 事件发生前---业务主流程（阶段/里程碑）
     * 待扫码 waitToScanCode
     * 待开锁 waitToUnlock
     * 待开头盔锁 waitToUnlockHelmet
     * 骑行中 riding
     * 临停中 temporaryParking
     * 待支付 waitToPay
     * 支付中 paying
     * 待结算 waitToSettle
     * 结算完成 settled
     */
    private String beforeStage;


    /**
     *
     * 事件发生后---业务主流程（阶段/里程碑）
     * 待扫码 waitToScanCode
     * 待开锁 waitToUnlock
     * 待开头盔锁 waitToUnlockHelmet
     * 骑行中 riding
     * 临停中 temporaryParking
     * 待支付 waitToPay
     * 支付中 paying
     * 待结算 waitToSettle
     * 结算完成 settled
     */
    private String afterStage;

    /**
     * 事件类型 与 stage 相关
     * 待扫码状态下: 扫码成功 scanSuccess, 扫码失败 scanFail, 输入编码成功 inputCodeSuccess, 输入编码失败 inputCodeFail
     * 待开锁状态下: 开锁成功 unlockSuccess, 开锁失败 unlockFail
     * 待开头盔锁状态下: 开锁成功 unlockSuccess, 开锁失败 unlockFail
     * 骑行中状态下: 临停成功 temporaryParkingSuccess, 临停失败 temporaryParkingFail, 还车成功 returnBikeSuccess, 还车失败 returnBikeFail
     * 临停状态下: 临停开锁成功 temporaryParkingUnlockSuccess, 临停开锁失败 temporaryParkingUnlockFail
     * 待支付状态下: 发起支付 createTransaction
     * 支付中状态下: 支付成功 paySuccess, 支付失败 payFail
     * 待结算状态下: 结算成功 settleSuccess, 结算失败 settleFail
     */
    private String eventType;


    private String eventDesc;

    private String detail;


    /**
     * 事件发生时间
     */
    private LocalDateTime eventTime;

    /**
     * 用户id
     */
    private Integer userId;

    /**
     * 业务信息(json格式) 如 订单号等,与 事件类型 eventType 关联
     */
    private String businessInfo;

    /**
     * 上报消息
     */
    private String message;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}